#ifndef __MEM_METRICS_HPP__
#define __MEM_METRICS_HPP__

#include <memory>
#include <string>
#include <map>

#include "metrics/utility/GaugeMetricsBuilder.hpp"

namespace metrics
{
    template <typename T>
    class Family;
    class MetricRegistry;

    class MemMetricsBuilder : public GaugeMetricsBuilder
    {
    public:
        MemMetricsBuilder(const std::string &name, const std::string &help, const std::map<std::string, std::string> &labels);
        MemMetricsBuilder();
        virtual ~MemMetricsBuilder();

        /**
         * @brief 注册
         * 
         * @param registry
         * @return std::shared_ptr<Family<Gauge>> cpu和meme的metric family
         */
        virtual std::shared_ptr<Family<Gauge>> metric_register(std::shared_ptr<MetricRegistry> registry);
    };

    MemMetricsBuilder BuildMemMetrics();

} // namespace metrics

#endif // __MEM_METRICS_HPP__